<html>

<head></head>

<body>

    <script type="text/javascript">
        // 1、使用工厂方法创建对象
        function createPerson(name, age, gender) {

            var result = new Object();

            result.name = name

            result.age = age;
            result.gender = gender;

            result.sayName = function() {
                alert("我的名字是" + this.name);
            }

            return result;
        }

        var luo = createPerson("罗俊华", 20)


        luo.sayName();



        //    2、使用构造函数来创建对象
        function Person(name, age, gender) {

            this.name = name;
            this.age = age;
            this.gender = gender;

            this.sayName = function() {
                alert("使用构造函数创建的对象中，我的名字是：" + this.name)
            }

        }

        var pLuo = new Person("罗俊华", 22, '男');

        var yan = new Person("燕", 18, '女');

        pLuo.sayName()

        //      但是上述创建对象的方式有个缺点：每创建一个对象就会在对象内相应的创建一个 sayName() 方法对象
        //      开销较大
        alert("构造函数中的sayName()方法是否一致：" + (pLuo.sayName === yan.sayName))
    </script>

</body>

</html>